 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tamagochi.logica;


/**
 * Classe que representa uma Thread, que sera responsavel por verificar o camando 
 * a restrição em reação a delimitação de unidades de ações e a quantidade relativa
 * de tempo em que ele deve realizar.
 * 
 * @see Command
 * @author Allan & Fabiana
 *
 */
public class Acao  extends Thread implements Runnable{
    
    private Command command;
    private boolean running;
    private long tempo;
    private int vezes;

    public Acao(Command command, long tempo, int vezes){
        this.vezes = vezes;
        this.tempo = tempo;
        this.command = command;
    }
            
            
    /**
     * Metodo que executa o comando necessario para um determidado tipo de objeto
     * e relaciona as questões de tempo, restrição de quantidade e alteração nas 
     * imagens correspondentes.
     * 
     * @exception InterruptedException
     */
    @Override
    public void run() {
        this.running = true;
        for(int i = 0; i < vezes && running; i++){
            command.execute();
            try {
                sleep(tempo);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            
        }
        this.command.undo();
    }

    /**
     * Metodo que altera a execução do andamento do processo da thread
     * 
     * @param running 
     */
    public void setRunning(boolean running){
        this.running = running;
    }
}
